
#pragma once
#include "State.h"
#include "EventListener.h"

class Entity;
class EntityManager;
class ParticleManager;
class EventSystem;
class Waypoint;

class GameplayState : public State, public EventListener
{
public:
	static GameplayState* GetInstance(void);
	virtual void Enter(void)					final;
	virtual void Exit (void)					final;
	virtual bool Input(void)					final;
	virtual void Update(float fElapsedTime)		final;
	virtual void Render(void)					final;
	void Quit(void);
	void HandleEvent(Event* e);

private:
	GameplayState(void);
	virtual ~GameplayState(void);
	GameplayState(const GameplayState&);
	GameplayState& operator=(const GameplayState&);
	EntityManager*			entityManager;
	ParticleManager*		particleManager;
	EventSystem*			eventSystem;
	bool  paused;
	int   pausedCursor;
	bool  quit;
	bool  waveVictory;
	bool  waveDefeat;
	Waypoint* waypoints[100];
	float GameSpeed;
};
